package com.itany.corejava.code08_常用类.内部类;
import com.itany.corejava.code08_常用类.内部类.SomeOuter.SomeInner;
/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年11月17日 11:26
 */
public class Test03_静态内部类 {
    public static void main(String[] args) {
        SomeOuter someOuter=new SomeOuter();
        someOuter.show();
        System.out.println(SomeOuter.phone);

        // 将SomeOuter.SomeInner当做一个类名
        // 方式一:外部类.内部类 变量名 = new 外部类.内部类()
        SomeOuter.SomeInner inner=new SomeOuter.SomeInner();
        inner.print();
        System.out.println("*****");
        // 方式二:手动导包,将外部类.内部类作为类名, 然后直接使用内部类
        // import 包名.外部类名.内部类名
        // 内部类 变量名 = new 内部类()
        SomeInner inner2=new SomeInner();
        inner2.print();



    }
}
class SomeOuter{
    private String name="admin";
    private int age=20;
    public static String phone="17898765432";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }


    public void show(){
        System.out.println("---------------这是外部类的方法-----------");
        System.out.println("在外部类访问静态内部类中的属性，通过实例");
        SomeInner inner=new SomeInner();
        System.out.println(inner.name);
        System.out.println(inner.gender);


    }
    //定义静态内部类
    static class SomeInner{
        private String name="alice";
        private String gender="男";

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getGender() {
            return gender;
        }

        public void setGender(String gender) {
            this.gender = gender;
        }
        public void print(){
            System.out.println("===============内部类方法开始=================");
            SomeOuter someOuter=new SomeOuter();
            System.out.println(someOuter.name);//通过外部类的实例可以访问
            System.out.println(someOuter.age);
            System.out.println(phone);//如果直接访问，不通过实例，只能访问static修饰的

        }
    }
}